package com.hoperun.bean;

import java.io.Serializable;
import java.util.List;

import org.apache.commons.collections.CollectionUtils;

import com.alibaba.fastjson.annotation.JSONField;
import com.google.common.collect.Lists;
import com.hoperun.bean.base.BaseBean;

public class AdminManager extends BaseBean implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final String TABLE_PREFIX = "ADMIN_MANAGER";

	/**
	 * 属性客服编号
	 */
	private Long managerId;

	/**
	 * 常量COL_MANAGER_ID 属性客服编号
	 */
	public static final String COL_MANAGER_ID = "MANAGER_ID";

	/**
	 * 获取客服编号属性
	 */
	public Long getManagerId() {
		return this.managerId;
	}

	/**
	 * 设置客服编号属性
	 */
	public void setManagerId(Long managerId) {
		this.managerId = managerId;
	}

	/**
	 * 属性账号
	 */
	private String accout;

	/**
	 * 常量COL_ACCOUT 属性账号
	 */
	public static final String COL_ACCOUT = "ACCOUT";

	/**
	 * 获取账号属性
	 */
	public String getAccout() {
		return this.accout;
	}

	/**
	 * 设置账号属性
	 */
	public void setAccout(String accout) {
		this.accout = accout;
	}

	/**
	 * 属性密码
	 */
	private String password;

	/**
	 * 常量COL_PASSWORD 属性密码
	 */
	public static final String COL_PASSWORD = "PASSWORD";

	/**
	 * 获取密码属性
	 */
	@JSONField(serialize = false)
	public String getPassword() {
		return this.password;
	}

	/**
	 * 设置密码属性
	 */
	public void setPassword(String password) {
		this.password = password;
	}

	/**
	 * 属性盐
	 */
	private int salt;

	/**
	 * 常量COL_SALT 属性盐
	 */
	public static final String COL_SALT = "SALT";

	/**
	 * 获取盐属性
	 */
	@JSONField(serialize = false)
	public int getSalt() {
		return this.salt;
	}

	/**
	 * 设置盐属性
	 */
	public void setSalt(int salt) {
		this.salt = salt;
	}

	/**
	 * 属性姓名
	 */
	private String realName;

	/**
	 * 常量COL_REAL_NAME 属性姓名
	 */
	public static final String COL_REAL_NAME = "REAL_NAME";

	/**
	 * 获取姓名属性
	 */
	public String getRealName() {
		return this.realName;
	}

	/**
	 * 设置姓名属性
	 */
	public void setRealName(String realName) {
		this.realName = realName;
	}

	/**
	 * 属性工号
	 */
	private String number;

	/**
	 * 常量COL_NUMBER 属性工号
	 */
	public static final String COL_NUMBER = "NUMBER";

	/**
	 * 获取工号属性
	 */
	public String getNumber() {
		return this.number;
	}

	/**
	 * 设置工号属性
	 */
	public void setNumber(String number) {
		this.number = number;
	}

	/**
	 * 属性云视互动登录密码
	 */
	private String sdkPwd;

	/**
	 * 常量COL_SDK_PWD 属性云视互动登录密码
	 */
	public static final String COL_SDK_PWD = "SDK_PWD";

	/**
	 * 获取云视互动登录密码属性
	 */
	public String getSdkPwd() {
		return this.sdkPwd;
	}

	/**
	 * 设置云视互动登录密码属性
	 */
	public void setSdkPwd(String sdkPwd) {
		this.sdkPwd = sdkPwd;
	}

	/**
	 * 属性登录session
	 */
	private String session;

	/**
	 * 常量COL_SESSION 属性登录session
	 */
	public static final String COL_SESSION = "SESSION";

	/**
	 * 获取登录session属性
	 */
	public String getSession() {
		return this.session;
	}

	/**
	 * 设置登录session属性
	 */
	public void setSession(String session) {
		this.session = session;
	}

	/**
	 * 属性用户类型 1:normal 2:enterprise
	 */
	private int userType;

	/**
	 * 常量COL_USER_TYPE 属性用户类型 1:normal 2:enterprise
	 */
	public static final String COL_USER_TYPE = "USER_TYPE";

	/**
	 * 获取用户类型 1:normal 2:enterprise属性
	 */
	public int getUserType() {
		return this.userType;
	}

	/**
	 * 设置用户类型 1:normal 2:enterprise属性
	 */
	public void setUserType(int userType) {
		this.userType = userType;
	}

	/**
	 * 属性加我为好友的权限验证：1.需要验证，2.不需要验证
	 */
	private int permValid;

	/**
	 * 常量COL_PERM_VALID 属性加我为好友的权限验证：1.需要验证，2.不需要验证
	 */
	public static final String COL_PERM_VALID = "PERM_VALID";

	/**
	 * 获取加我为好友的权限验证：1.需要验证，2.不需要验证属性
	 */
	public int getPermValid() {
		return this.permValid;
	}

	/**
	 * 设置加我为好友的权限验证：1.需要验证，2.不需要验证属性
	 */
	public void setPermValid(int permValid) {
		this.permValid = permValid;
	}

	/**
	 * 属性头像版本号
	 */
	private long avatarFileId;

	/**
	 * 常量COL_AVATAR_FILE_ID 属性头像版本号
	 */
	public static final String COL_AVATAR_FILE_ID = "AVATAR_FILE_ID";

	/**
	 * 获取头像版本号属性
	 */
	public long getAvatarFileId() {
		return this.avatarFileId;
	}

	/**
	 * 设置头像版本号属性
	 */
	public void setAvatarFileId(long avatarFileId) {
		this.avatarFileId = avatarFileId;
	}

	/**
	 * 属性信息版本号
	 */
	private int infoVersion;

	/**
	 * 常量COL_INFO_VERSION 属性信息版本号
	 */
	public static final String COL_INFO_VERSION = "INFO_VERSION";

	/**
	 * 获取信息版本号属性
	 */
	public int getInfoVersion() {
		return this.infoVersion;
	}

	/**
	 * 设置信息版本号属性
	 */
	public void setInfoVersion(int infoVersion) {
		this.infoVersion = infoVersion;
	}

	/**
	 * 属性0：是，1：否
	 */
	private int status;

	/**
	 * 常量COL_STATUS 属性0：是，1：否
	 */
	public static final String COL_STATUS = "STATUS";

	/**
	 * 获取0：是，1：否属性
	 */
	public int getStatus() {
		return this.status;
	}

	/**
	 * 设置0：是，1：否属性
	 */
	public void setStatus(int status) {
		this.status = status;
	}

	public List<AdminRoles> getRoles() {
		return roles;
	}

	public void setRoles(List<AdminRoles> roles) {
		this.roles = roles;
	}

	public void addRole(AdminRoles role) {

		if (null == role) {
			return;
		}

		if (CollectionUtils.isEmpty(this.roles)) {
			this.roles = Lists.newArrayList();
		}
		this.roles.add(role);
	}

	public List<AdminOrganizations> getOrganizations() {
		return organizations;
	}

	public void setOrganizations(List<AdminOrganizations> organizations) {
		this.organizations = organizations;
	}

	public void addOrganization(AdminOrganizations organization) {

		if (null == organization) {
			return;
		}

		if (CollectionUtils.isEmpty(this.organizations)) {
			this.organizations = Lists.newArrayList();
		}
		this.organizations.add(organization);
	}

	private List<AdminRoles> roles;

	private List<AdminOrganizations> organizations;

}
